package com.hzw.saas.common.pay.alipay.bean;

import com.alibaba.fastjson.JSON;
import com.alipay.api.internal.util.StringUtils;
import lombok.Getter;

/**
 * alipay.trade.cancel(统一收单交易撤销接口) biz_content 参数
 *
 * @author zzl
 * @since 2020-09-25
 */
@Getter
public class AliCancelReqContent extends AliTradeReqContent{

    /**
     * 原支付请求的商户订单号
     * 和支付宝交易号不能同时为空
     */
    private String out_trade_no;

    /**
     * 支付宝交易号
     * 和商户订单号不能同时为空
     * 如果同时传了 out_trade_no和 trade_no，则以 trade_no为准
     */
    private String trade_no;

    public static AliCancelReqContent build() {
        return new AliCancelReqContent();
    }

    public AliCancelReqContent out_trade_no(String outTradeNo) {
        this.out_trade_no = outTradeNo;
        return this;
    }

    public AliCancelReqContent trade_no(String tradeNo) {
        this.trade_no = tradeNo;
        return this;
    }


    @Override
    public String buildBizContent() {
        if (StringUtils.isEmpty(out_trade_no) && StringUtils.isEmpty(trade_no)) {
            throw new IllegalArgumentException("out_trade_no商户订单号与trade_no支付宝交易号不能同时为空！");
        }

        return JSON.toJSONString(this);
    }
}
